/*
 * Celda.cpp
 *      Author: sebastian
 */

#include "Celda.h"

Celda::Celda() {
	numero = 0;
	estado=true;
	miniBarVertical = false;
	miniBarHorizontal = false;
	fila = -1;
	columna = -1;
}

Celda::Celda(unsigned int numero) {
	this->numero = numero;
	fila = -1;
	columna = -1;
	estado = true;
	miniBarVertical = false;
	miniBarHorizontal = false;
}



Celda::~Celda() {

}

void Celda::dibujarse(){
	if (estado || numero==0){
		if (esMiniBarHorizontal()) std::cout << "-";
		else if (esMiniBarVertical()) std::cout << "|";
			else std::cout << ".";
		std::cout << numero;
	}
	else {
		std::cout << ".x";
	}
}

unsigned int Celda::getTipo(){
	return numero;
}


void Celda::cambiarEstado(){
	estado = false;
}

bool Celda::getEstado(){
	return estado;
}

bool Celda::esMiniBarHorizontal(){
	return miniBarHorizontal;
}

bool Celda::esMiniBarVertical(){
	return miniBarVertical;
}

bool Celda::esEstrella(){
	return numero==estrella;
}

bool Celda::esAgujero(){
	return numero==agujero;
}

bool Celda::esMinibar(){
	return (miniBarVertical || miniBarHorizontal);
}

void Celda::setMiniBarVertical(){
	miniBarVertical = true;

}

void Celda::setMiniBarHorizontal(){
	miniBarHorizontal = true;
}

void Celda::setearPosicion(int fila, int columna){
	this->fila = fila;
	this->columna = columna;
}

int Celda::getFila(){
	return fila;

}

int Celda::getColumna(){
	return columna;
}


Json::Value Celda::getJson(){
	Json::Value root;
	root["numero"] = numero;
	root["estado"] = estado;
	root["miniBarVertical"] = miniBarVertical;
	root["miniBarHorizontal"] = miniBarHorizontal;
	return root;
}

void Celda::setJson(Json::Value& root){
	numero = root["numero"].asUInt();
	estado = root["estado"].asBool();
	miniBarVertical = root["miniBarVertical"].asBool();
	miniBarHorizontal =	root["miniBarHorizontal"].asBool();
}

